// Copyright (c) 2023 Presto Labs Pte. Ltd.
// Author: tianqiang

#pragma once

#include "coin2/exchange/base/order/processor.h"
#include "coin2/exchange/uniswap/api_order/grpc/grpc_trade_client.h"

namespace coin2::exchange::uniswap::api_order::grpc {

class UniswapGrpcSubscriber : public base::order::RestSubscriber {
 public:
  using RestSubscriber::RestSubscriber;

  void SubscribeAsync() override;

 private:
  UniswapGrpcTradeClient* grpc_client() {
    return static_cast<UniswapGrpcTradeClient*>(grpc_client_);
  }

  void QueryAccountBalance(const std::set<std::string>& currencies);
  void QueryNftTokenInfo(const std::string& symbol);
};

}  // namespace coin2::exchange::uniswap::api_order::grpc
